#!/bin/bash
set -x
set -e

# 达梦数据库安装脚本

# 定义变量
DM_USER="dmdba"
DM_GROUP="dinstall"
DM_GROUP_GID="2001"
# 达梦安装目录
INSTALL_DIR="/home/dmdba/dmdata"
DM_DIR="/home/dmdba"
DM_INSTALLER="/dm8_20250527_x86_kylin10_64-供应商.iso"

# 检查是否以root权限运行
check_root() {
    if [ "$EUID" -ne 0 ]; then
        echo "请以root权限运行此脚本"
        echo "使用方法: sudo $0"
        exit 1
    fi
}

# 创建用户组和用户
# create_user_group() {
#     echo "创建用户组和用户..."
#     # 创建用户组
#     if ! getent group $DM_GROUP > /dev/null 2>&1; then
#         groupadd $DM_GROUP -g $DM_GROUP_GID  # 去掉sudo
#         echo "用户组 $DM_GROUP 创建成功"
#     else
#         echo "用户组 $DM_GROUP 已存在"
#     fi
    
#     # 创建用户
#     if ! id $DM_USER > /dev/null 2>&1; then
#         useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba  # 去掉sudo
#         echo "用户 $DM_USER 创建成功"
#     else
#         echo "用户 $DM_USER 已存在"
#     fi
# }


# 挂载安装包
mount_installer() {
    echo "挂载安装包..."
    # 假设ISO文件在当前目录
    if [ -f "$DM_INSTALLER" ]; then
        mount -o loop $DM_INSTALLER /mnt
        echo "安装包挂载成功"
    else
        echo "未找到安装包文件: $DM_INSTALLER"
        echo "请将达梦数据库ISO文件放置在当前目录"
        exit 1
    fi
}

# 执行安装
install_dm() {
    echo "开始安装达梦数据库软件..."
    chmod 755 /opt/dmdb_auto_install.xml
    bash /mnt/DMInstall.bin -q /opt/dmdb_auto_install.xml
}

# 启动服务
start_dm_service() {
    echo "启动达梦数据库服务..."
    $DM_DIR/dmdbms/bin/DmServiceDAMENG start
    chmod -R 755 $DM_DIR/dmdbms/tool/workspace

}
# 修改文件打开最大数
configure_limits() {
    echo "配置用户资源限制..."
    # 备份原文件
    if [ ! -f /etc/security/limits.conf.bak ]; then
        cp /etc/security/limits.conf /etc/security/limits.conf.bak
    fi
    
    # 添加达梦数据库用户特定配置
    cat >> /etc/security/limits.conf << EOF

    # 达梦数据库用户资源限制
    $DM_USER  soft      nice       0
    $DM_USER  hard      nice       0
    $DM_USER  soft      as         unlimited
    $DM_USER  hard      as         unlimited
    $DM_USER  soft      fsize      unlimited
    $DM_USER  hard      fsize      unlimited
    $DM_USER  soft      nproc      65536
    $DM_USER  hard      nproc      65536
    $DM_USER  soft      nofile     65536
    $DM_USER  hard      nofile     65536
    $DM_USER  soft      core       unlimited
    $DM_USER  hard      core       unlimited
    $DM_USER  soft      data       unlimited
    $DM_USER  hard      data       unlimited
EOF
     echo "用户资源限制配置完成"
}
# 目录创建及权限修改
create_catalog_permission() {
    echo "创建目录及权限修改..."
    # 创建目录
    if [ ! -d "$INSTALL_DIR" ]; then
        mkdir -p $INSTALL_DIR/{data,arch,dmbak}
    fi
    
    # 修改目录权限
    chown -R $DM_USER:$DM_GROUP $INSTALL_DIR
    chmod -R 755 $INSTALL_DIR
}

# 命令行注册服务
register_dm_service(){
    $DM_DIR/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini $DM_DIR/dmdata/data/DAMENG/dm.ini -p DAMENG
}
# 主函数
main() {
    echo "开始安装达梦数据库..."
    
    check_root
    # create_user_group 创建用户组这一直有权限问题，先注释掉

    # 修改文件打开最大数 (完成)
    configure_limits

    # 目录创建及权限修改
    create_catalog_permission

    # 挂载达梦安装包 需要提前把安装包放到指定位置/下
    mount_installer 

    # 静默安装达梦数据库  需要提前把dmdb_auto_install.xml放到指定位置/opt下
    install_dm

    # 命令行注册服务
    register_dm_service

    # 达梦数据库启动
    start_dm_service

}

# 执行主函数
main "$@"